home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / tdk_v120.zip / MAXINFO.DOC < prev    next >
Text File  |  1996-07-23  |  58KB  |  1,106 lines

  1. ───────────────────────────────────────────────────────────────────────────────
  2.    ▀▀▀▀▀▀▀▀  ▀▀▀▀▀▀    ▀▀   ▀▀
  3.      ▀▀     ▀▀   ▀▀   ▀▀  ▀▀
  4.     ▀▀     ▀▀   ▀▀▀  ▀▀▀▀▀  The DoorKit!
  5.    ▀▀     ▀▀   ▀▀   ▀▀  ▀▀
  6.   ▀▀     ▀▀▀▀▀▀    ▀▀    ▀▀
  7.   The BBS Door Development Kit By The People - For The People!
  8. ───────────────────────────────────────────────────────────────────────────────
  9.   The ANSI/ASCII/RIP/MAX DoorKit v1.20
  10.   No Copyright Notices Expressed Or Implied
  11.   Compiled By Larry L. Athey From Numerous Sources
  12. ───────────────────────────────────────────────────────────────────────────────
  13.  
  14.  
  15.   Information Regarding MAX Graphics:
  16.   ───────────────────────────────────
  17.   Notice is hereby given that the MAXscript, MAXterm, and Mini-MAX are all
  18.   products of BBS Utiliteez Software. No changes, additions, subtractions,
  19.   or other modifications shall be made to MAXscript without prior consent
  20.   from Larry L. Athey....This is not a legal issue, this is only a request
  21.   to prevent a standard from becoming a non-standard like so many other BBS
  22.   related products and their formats have become.
  23.  
  24.   The MAXscript language is donated to the public domain and may be used in
  25.   any BBS or BBS Door 100% royalty free. The MAX Graphics development kit is
  26.   also donated to the public domain. Other graphics kits may be used as well
  27.   to support MAX Graphics so long as they follow the same palette settings
  28.   used in the InitPalette procedure in the SVGADOOR.PAS unit. You are by no
  29.   means restricted to using BGI graphics for MAX Graphics doors or utilities.
  30.  
  31.   Even though MAXscript is donated to the public domain, I would appreciate
  32.   credit for the time and effort I put into designing MAXscript. Again this
  33.   is not a legal issue, it's just common courtesy. Thanks in advance!
  34.  
  35.  
  36.   Disclaimer:
  37.   ───────────
  38.   MAXscript, MAXcontrol, MAXterm, Mini-MAX, and MAX Graphics are not copies
  39.   of, or otherwise plagiarized remote graphics methods used by any other BBS
  40.   software. Even though MAX follows 3 commands used by RIPscript and other
  41.   RIP capable BBSes, this isn't any kind of a copyright infringement of the
  42.   RIP technology. These same strings of text randomly occur in computers all
  43.   the time and according the the US Library Of Congress there is no copyright
  44.   or trademark issued to: !|1K|*|#|#|#  or  ! ....End of disclaimer....
  45.  
  46.  
  47.   Larry L. Athey
  48.   BBS Utiliteez Software
  49.   Alliance, Nebraska, USA
  50.   BBS & FAX: 308-762-2239
  51.  
  52.  
  53. ───────────────────────────────────────────────────────────────────────────────
  54.  
  55.  
  56.   What Are MAX Graphics Anyway?
  57.   ─────────────────────────────
  58.   What is MAX? MAX Graphics is alternative to the inferiority of RIP and RIP2
  59.   graphics. I'm not about to plagiarize on any other graphical BBS out there,
  60.   so what I have done is devised a new SVGA graphics protocol that you can
  61.   implement into any RIP capable BBS. RIP and RIP2 simply do not offer a high
  62.   enough quality graphical user interface for the caller, yet for some reason,
  63.   people insist on supporting the RIP format in their doors and BBSes. RIP is
  64.   only an EGA graphics interface, RIP2 is only a VGA interface, MAX is a true
  65.   full SVGA graphical user interface with full digital sound capabilities!
  66.  
  67.   MAX is mainly for those people that want to be able to offer a _True_ SVGA
  68.   graphical user interface to their callers without forcing them have to go
  69.   out and buy new BBS software. All you really need to do to implement MAX
  70.   Graphics into any BBS is rename or save all of the .MAX screens to .RIP and
  71.   put them where your BBS will read them. Unfortunately, BBSes with built in
  72.   local display of RIP graphics won't be able to display these screens locally.
  73.   Hey, maybe you or someone else out there will drum up the nerve to write a
  74.   BBS package that will display local MAX Graphics. <G>
  75.  
  76.   The MAX graphics protocol is public domain information as well as the MAX
  77.   Graphics development kit. However, I will not release the source code to
  78.   the MAXterm terminal and sub-terminal programs. Developers can mangle and
  79.   bastardize the developer's kit all they want, they just have to make sure
  80.   their programs send and receive the correct script & control commands for
  81.   MAXterm to work for them _AND_ support the same SVGA palette settings.
  82.  
  83.   There are two MAX compatible terminal programs available at this time. One
  84.   is a stand alone terminal complete with dialing directory. The other is a
  85.   "Sub-Terminal" program that you can run in a script or batch file from any
  86.   other terminal program. The reason for creating the sub-terminal is because
  87.   some people are too fond of their current program to part with it. So this
  88.   will allow them to enjoy MAX Graphics without changing terminal programs.
  89.  
  90.   Anybody can create and view MAX screen files. All you need is a copy of the
  91.   MAXterm terminal or sub-terminal program and a text editor. Creating a MAX
  92.   screen is as simple as writing a graphics program in Pascal. The MAXterm
  93.   program can display screens locally and has a built in editor for creating
  94.   or modifying icons. A complete MAX Graphics drawing program will be added
  95.   in the near future.
  96.  
  97.  
  98.   Here is a very brief overview of what MAX graphics can provide:
  99.   ───────────────────────────────────────────────────────────────
  100.   -Pascal like script language (More "English-Like" than RIPscript).
  101.   -Also uses MAXcontrol "Control Code Language" to enhance speed.
  102.   -Public domain Door/Utility Pascal 7.0 development kit.
  103.   -MAX screens can be used in any RIP capable BBS.
  104.   -All screens use 640x480 pixel resolution and 256 colors.
  105.   -Fully mouse driven graphical user interface with windows.
  106.    Window types: 1. Standard Block   (Similar to MS-Windows or OS/2)
  107.                  2. Invisible        (Used for saving screen regions)
  108.                  3. Flat Panel       (A window with no title header)
  109.                  4. Semi-Transparent (Looks like looking thru a window screen)
  110.   -Use of icons (Multiple sizes and styles) in screens.
  111.   -Use of buttons in screens (with or without icons).
  112.   -Use of over 200 GEM fonts in screens (Say it with me, "NO BGI FONTS!").
  113.   -Use of scrolling picklists in screens.
  114.   -Use of a text file reader in any screen.
  115.   -Use of a text editor in any screen.
  116.   -Use of entry fields (5 different types) in screens.
  117.   -Use of graphics images in screens.
  118.   -Attach VOC/MIDI/MOD sound files to buttons and screens.
  119.   -Have repeating MOD/MIDI files playing in the background.
  120.   -Fully animated 640x480x256 resolution door games.
  121.   -FreeWare MAXterm resource update door for any BBS.
  122.   -More is yet to come!
  123.  
  124.  
  125.   NOTE: The name MAX is in no way connected with the Maximus BBS software....
  126.  
  127.  
  128. ───────────────────────────────────────────────────────────────────────────────
  129.  
  130.  
  131.   Creating Screen Files:
  132.   ──────────────────────
  133.   Unlike other graphics protocols out there, MAX Graphics does not require
  134.   you to unload $200.00 on a paint/drawing program. Even though a paint /
  135.   drawing program is considered to be a luxury, it's by no means a necessity.
  136.   Screen files can be created with nothing more than a text editor and a copy
  137.   of one of the MAXterm programs. Both MAXterm and Mini-MAX have complete
  138.   local screen viewing capabilities as well as an icon editor. If you are
  139.   familiar with the Pascal programming language, then MAXscript will be like
  140.   second nature to you. If you are not familiar with Pascal, fear not, this
  141.   will still be an easy language for you to learn. MAXscript is a very Human
  142.   Like script language. There is no need for you to learn a bunch of mundane
  143.   pipe codes or escape sequences, everything is done with simple commands and
  144.   variables. The only thing you may have a hard time getting used to is the
  145.   resolution of the screens, but that won't last for long. When I first got
  146.   into using high resolution graphics in my programs, it took me about 2 or 3
  147.   weeks to get used to 640x480x256 after working with 80x25x16 for God knows
  148.   how many years before that.
  149.  
  150.  
  151.   A quick example of a very basic screen file would look like this:
  152.   ─────────────────────────────────────────────────────────────────
  153.   Draw_Window(100,100,630,380,1,'Welcome To MAX Graphics!')
  154.   Put_Image(150,150,'CLOUD.PCX')
  155.   Shadow_Text(350,150,5,0,2,'This Sure Beats RIP Eh?')
  156.   Small_Icon_LIB('ICONLIB.001')
  157.   Draw_Button(530,350,80,46,1,20,'Continue')
  158.   Play_Sound('FUNKY.MOD')
  159.   End_Screen()
  160.  
  161.   NOTE: MAXscript commands are NOT case sensitive!
  162.  
  163.   In the above example, there are 7 elements to the screen. I will refer to
  164.   them as Element #1....Element #7 in my explanation of their functions....
  165.   All commands always end with a pair of left and right parenthesis to tell
  166.   MAXterm when it has reached the end of a command string. In most commands,
  167.   the parameters or Variables are separated by commas inside of parenthesis.
  168.   Any text you wish to print, any file names you wish to define, and button
  169.   hot-keys must be declared inside of apostrophes. Those are the only rules
  170.   you have to follow with script commands. Pretty simple huh?
  171.  
  172.   Element #1: This draws a window on the screen using 4 coordinates. In all
  173.               examples where specific screen coordinates are used, they will
  174.               be in the fashion of X1,Y1,X2,Y2...Your X coordinates are the
  175.               columns and the Y coordinates are the rows. In an SVGA screen,
  176.               your minimum and maximum X1,Y1,X2,Y2 coordinates are limited
  177.               to 0,0,639,479. So the window in the example shown above will
  178.               be plotted at 100,100,630,380....
  179.  
  180.               But what about the other two parameters/variables? The other
  181.               two parameters are for telling MAXterm what type of window to
  182.               display and what text to place in the window header. See the
  183.               "Overview" section above for a definition of window types.
  184.  
  185.   Element #2: This tells MAXterm to display a graphic image at the X1,Y1
  186.               coordinates. Graphics images can be of the PCX, BMP or JPG
  187.               format. Sorry, GIF is not supported thanks to CompuServe..
  188.  
  189.   Element #3: This tells MAXterm to display a string of text at the X1,Y1
  190.               coordinates. This command tells MAXterm to make the text be
  191.               in color #5 (Magenta) with a #0 (Black) background. MAXterm's
  192.               first 15 colors in its palette match the first 15 colors in
  193.               the ANSI palette. The next parameter tells MAXterm which font
  194.               to use for the text. MAXterm has three built in fonts and can
  195.               load any font from an external GEM font file. The definitions
  196.               for the fonts are:  1 - 5x8 Bitmapped Font
  197.                                   2 - GEM "System" Font
  198.                                   3 - 8x14 ROM Resident Font
  199.                                   4 - User Defined External Font
  200.  
  201.               The last parameter of course is the text you wish to display.
  202.  
  203.   Element #4: This instructs MAXterm to change files to read it's small icon
  204.               images from. MAXterm supports Small, Medium, and Large icons.
  205.  
  206.   Element #5: This tells MAXterm to draw a button on the screen at the X1,Y1
  207.               coordinates. The third parameter is the width of the button in
  208.               pixels, this might take a little time to get used to. The next
  209.               parameter, the 'C' tells MAXterm what character to send to the
  210.               BBS when this button is clicked with the mouse. The next param-
  211.               eter tells MAXterm whether or not to plot a Small Icon on the
  212.               button (1=Yes, 0=No). The next parameter is the number of the
  213.               icon in the currently selected "Small_Icon" library file. The
  214.               last parameter of course is the text to print in the button.
  215.  
  216.   Element #6: This tells MAXterm to play a sound file while waiting for a
  217.               key or button press. MAXterm supports MIDI, MOD and VOC files.
  218.  
  219.   Element #7: This tells MAXterm that the end of the screen file has been
  220.               sent and that it should jump into "Wait State". MAXterm has
  221.               three modes: Draw Mode, Animate, and Wait State. The command
  222.               that throws MAXterm into Draw Mode is the same command string
  223.               that a BBS or door sends to RIPterm to tell it to clear the
  224.               screen and prepare to draw a new screen. The animate mode can
  225.               only be activated in a door or BBS that was developed using
  226.               TDK or other compatible door/BBS development kit. The Animate
  227.               mode relies on Control Commands rather than Script Commands.
  228.  
  229.   There you have it, a very basic example of a MAXscript screen file. As you
  230.   will see further on into this document, there are a lot more MAXscript and
  231.   MAXcontrol commands. Don't let the large number of commands intimidate you,
  232.   they are only here to provide complete flexibility in screen, door and BBS
  233.   design. Even the most sophisticated of screen files can be created using
  234.   the bare minimum of script commands.
  235.  
  236.  
  237.   The RIPscript Misconception:
  238.   ────────────────────────────
  239.   There is one misconception you may have about this and I will clear that up
  240.   for you right now. Even though RIP's graphics are based on short strings of
  241.   these crazy obscure characters, it's not any faster. RIP graphics are all
  242.   based on "Line Drawing" methods all the way down to the BGI fonts used in
  243.   RIP graphics, there are very little, if any, predefined graphics elements
  244.   or "Graphics Primitives". You may think that first example script command
  245.   is so long that it would take longer to draw than any RIP command would....
  246.   WRONG! MAXterm and the MAX Graphics development kit already have the Window
  247.   Primitive predefined. If you were to do the same thing with RIP, you would
  248.   need to send 40....Say it with me....FORTY COMMANDS to draw a simple window
  249.   on the user's screen. To draw a Semi-Transparent window on the user's screen
  250.   you would need to send in upwards of 40,000 commands to the user because you
  251.   would have to plot out the majority of the window Pixel-By-Pixel. Now do you
  252.   see the MAX advantage?
  253.  
  254.   The RIPSCRIP.DOC makes a huge deal out of the fact that their language is
  255.   not humanly readable. They claim that it is faster than other languages
  256.   they compared it against (in 1991 and before) that were humanly readable,
  257.   but they didn't have MAX at that time. They were trying to design their
  258.   language around slowpoke 2400 baud to 9600 baud modems. The truth is now
  259.   nobody (nobody in their right mind) uses any less than a 14400 baud modem.
  260.   RIP's methods still aren't that fast even with their short little cryptic
  261.   script commands. They fail to tell you that RIPscript takes anywhere from
  262.   10 times to 40 times or more of their commands to do the same thing that
  263.   you can do with one command from other languages. MAXscript is the slowest
  264.   way of communicating with MAXterm, but it is still light years faster than
  265.   RIPscript - EVEN AT 2400 BAUD!
  266.  
  267.   Take a look at the RIPSCRIP.DOC some time, it's available on just about
  268.   any BBS, and see how many RIPscript commands it would take to equal just
  269.   one MAXscript command. If you really want to speed up things in MAX, you
  270.   can also use MAXcontrol commands which are basically just as cryptic as
  271.   RIPscript commands. Every MAXscript command has a MAXcontrol counterpart,
  272.   so you can sacrifice the humanly readable concept in exchange for added
  273.   display speed. It's up to you how you want to do things, but either way
  274.   you look at it - RIP graphics simply do not compare to MAX Graphics in
  275.   any way - not in speed - and most definitely not in appearance!
  276.  
  277.  
  278.   The Difference Between MAXscript and MAXcontrol Commands:
  279.   ─────────────────────────────────────────────────────────
  280.   There are two ways of communicating with MAXterm and Mini-MAX. MAXscript is
  281.   a script language that is humanly readable and understandable. MAXcontrol
  282.   is also a script language of sorts, however it is not meant to be humanly
  283.   readable - it is low level language meant to communicate with MAXterm and
  284.   Mini-MAX at a faster rate and provide complete Host <> MAXterm interaction.
  285.  
  286.   MAXscript works with MAXterm in the same manner that MOST BBS programs work
  287.   with RIPterm. Meaning, once the screen is sent - that's it. There's nothing
  288.   else that can be done in the graphics mode on the user's screen. Don't get
  289.   me wrong, I am well aware of these little RIPscript slide shows people have
  290.   drawn....Like the one where the tank runs around the screen and eventually
  291.   gets blown up. However, all the while that screen is being sent to the user,
  292.   they are forced to sit there and wait until the screen is done drawing. If
  293.   the BBS wants to send something else, the user's screen is always cleared
  294.   off so no graphics overlap each other. That's just the way most people use
  295.   RIP graphics in their BBS programs when they write them. RIP _IS_ capable
  296.   of drawing over top of previously sent screens, it's just that most people
  297.   don't design their BBS programs to work that way.
  298.  
  299.   MAXcontrol works with MAXterm and Mini-MAX using a two way communications
  300.   method. MAXcontrol codes are not readable by the average Joe. A MAXcontrol
  301.   command always starts with an ASCII #255 followed by a ~ (ASCII #126) and
  302.   is terminated with another ASCII #255 to indicate the end of the command.
  303.   The actual MAXcontrol commands are placed between the ASCII #126 and the
  304.   final ASCII #255. As with MAXscript, your parameters or variables are to
  305.   be separated by commas with your text and hotkey declarations to be placed
  306.   inside of apostrophes. MAXcontrol codes may also be used in a screen file
  307.   with MAXscript commands. That kind of defeats the purpose of the MAXscript
  308.   screen files being humanly readable by others, but that's completely up to
  309.   you how you want to create your screens. You can replace any script command
  310.   with a control command to give your screens an extra speed boost. MAXterm
  311.   first looks for MAXcontrol codes, if it doesn't detect the MAXcontrol code
  312.   sequence, it will then look for MAXscript commands. All MAXscript commands
  313.   have a MAXcontrol code counterpart, see below:
  314.  
  315.    MAXscript: Draw_Window(100,100,630,380,1,'Welcome To MAX Graphics!')
  316.  
  317.   MAXcontrol: #255#126#128100,100,630,380,1,'Welcome To MAX Graphics!'#255
  318.           Or:  ~Ç100,100,630,380,1,'Welcome To MAX Graphics!' 
  319.  
  320.   Keep in mind that you CANNOT put the 4 characters "#255" in a MAX screen
  321.   file or send them to the comport in your program and expect results from
  322.   it. The #255 is the ASCII value of a character. Since this character has
  323.   no actual screen image, just like the spacebar creates, the #255 is used
  324.   strictly for clarity purposes only.
  325.  
  326.   In most text editors, you can add an extended key code anywhere by using
  327.   your ALT key and your numeric keypad. For example, to add an ASCII #255,
  328.   you would hold your ALT key and type 2 5 5 on the numeric keypad. After
  329.   you release the ALT key, the character will appear. This procedure also
  330.   works in most programming IDE's as well.
  331.  
  332.   Notice in the "Or:" example, you can't see the ASCII character #255 but
  333.   it's still in there. Go to that line and hit your END key and you'll see
  334.   that your cursor will show up one space past the end of the line. Now you
  335.   may not believe this, but the MAXcontrol commands really are about 50% to
  336.   60% faster than MAXscript commands. The string Draw_Window( is replaced by
  337.   a single ASCII character #128. If you are a programmer, what this means is
  338.   MAXterm and Mini-MAX can use a "CASE" routine instead of an "IF THEN ELSE"
  339.   routine, which you know is a major advantage. Either way you look at it,
  340.   the command line for a MAXcontrol command is shorter, which means it will
  341.   transfer faster, it doesn't take a rocket scientist to figure that out.
  342.  
  343.  
  344. ───────────────────────────────────────────────────────────────────────────────
  345.  
  346.  
  347.   The Ins & Outs Of MAX Graphics:
  348.   ───────────────────────────────
  349.   As mentioned in the above, MAXscript can be used in any BBS that supports
  350.   RIP graphics (ie: RIPscript v1.54)....When a BBS detects RIP graphics in
  351.   the remote's terminal program, it sends an ASCII #27 plus [ plus !  (!).
  352.   RIPterm will return "RIPSCRIP015410", but all most BBSes look for is to see
  353.   if there is now data available at the comport after sending that string of
  354.   text. MAXterm and Mini-MAX, they return "RIPSCRIP015400" upon reception of
  355.   the ! Autosensing command, even though they are not RIP compatible. This
  356.   is just to fool the BBS into thinking they are so the BBS can send the MAX
  357.   screen files renamed as RIP screen files.
  358.  
  359.   After your BBS or door program has determined whether or not the user has
  360.   RIP capabilities, you send the string #255~#255 to the comport. Remember,
  361.   the #255 is an ASCII #255, not the 4 characters: # and 2 and 5 and 5. When
  362.   MAXterm and Mini-MAX receive this string of commands, they will return the
  363.   version number of MAXscript they support (ie: #.##)....From this point on,
  364.   you will need to tell your program that "YES" the remote caller does have
  365.   MAXscript _AND_ MAXcontrol capabilities.
  366.  
  367.   Now before any RIP compatible BBS or door sends screen file data to the
  368.   remote, it sends a pair of commands to tell the remote to clear the screen
  369.   of any previously sent graphics, see below:
  370.  
  371.   RIP Clear Screen: Command #1 = #13#10  (Blank Line)
  372.                     Command #2 = #12#13
  373.  
  374.   This basically has the same effect on MAXterm and Mini-MAX. This tells any
  375.   MAX Graphics compatible terminal program to kill all active windows on the
  376.   screen. Some RIP capable BBS programs and doors will only send the second
  377.   command, so you will have to design your programs mainly around Command #2
  378.   to clear the screen. Command #1 is mainly just to send a blank line to the
  379.   terminal program in order to prevent any possible errors.
  380.  
  381.   After this command has been sent, this tells MAXterm and Mini-MAX to jump
  382.   into "Draw Mode". While the program is in Draw Mode, it will only respond
  383.   to MAXscript and MAXcontrol commands. It will completely ignore all ANSI
  384.   escape sequences and RIPscript commands at this point. From here, you must
  385.   send commands to the terminal programs to instruct them to draw items on
  386.   the screen, or jump into "Animate" or "Wait State" modes. Your screens or
  387.   must always end with an End_Screen() Or #255#126#254#255 to throw them in
  388.   to Wait State where they will display any text or ANSI escape sequences in
  389.   what is called a "Text View Window". In the case of a BBS or door program
  390.   that supports MAXcontrol codes as well as MAXscript commands, you can use
  391.   the Animate() or #255#126#253#255 command instead of the End_Screen().
  392.  
  393.   In some BBS or door programs, after a RIP screen is drawn, they may create
  394.   some sort of dynamically generated text at the bottom of the screen. Some
  395.   BBS programs do this to tell the user what the currently selected message
  396.   or file area is or other system messages. If your BBS or door does this you
  397.   will need to define a Text View Window somewhere on the screen using the
  398.   command Text_View_Window(X1,Y1,X2,Y2) or #255#126#252X1,Y1,X2,Y2#255....
  399.  
  400.   In some cases, your BBS or door program will require MAXterm and Mini-MAX
  401.   to emulate a regular ANSI/ASCII terminal program. MAXterm and Mini-MAX will
  402.   respond to the same command strings that RIPterm does to throw it back into
  403.   text mode, see below:
  404.  
  405.   RIP To Text: Command #1 = #13#10  (Blank Line)
  406.                Command #2 = !|1K|*|#|#|#  (Plus a #13)
  407.  
  408.   Again, the first command may not be sent by all BBS and door programs, keep
  409.   in mind though that MOST of them do. The second command is the one that you
  410.   should focus on. The second command will instruct MAXterm to pop up a new
  411.   window on the screen that supports 80x25x16 resolution using font type #3.
  412.   Font type #3 is needed so the program can display high ASCII characters.
  413.   Any time you need to throw MAXterm back into graphics mode, simply send
  414.   the commands defined in the "RIP Clear Screen" section.
  415.  
  416.  
  417.   The Animate Mode:
  418.   ─────────────────
  419.   MAXterm and Mini-MAX both support what is called an "Animate" mode. This is
  420.   similar to the "Wait State" mode with the exception that there is complete
  421.   interaction between the BBS or door program and the terminal program. This
  422.   mode causes a significant amount of "Drag" on the system as a whole because
  423.   both programs are reading from and writing to the comport in an alternating
  424.   fashion. I'm sure you can see the advantage here, this will allow a person
  425.   to simulate online multi-tasking as well as bi-directional protocols. What
  426.   you would do instead of ending your screen or routine with the End_Screen()
  427.   or #255#126#254#255 command, you would end it with the Animate() command or
  428.   with the #255#126#253#255 MAXcontrol code.
  429.  
  430.   While in Animate mode, all commands sent to the comport must be MAXcontrol
  431.   commands as to eliminate as much drag on the system as possible. Any other
  432.   characters sent to the port will be accepted as standard text.
  433.  
  434.  
  435.   External Font Files:
  436.   ────────────────────
  437.   MAXterm, Mini-MAX and the MAX Graphics development kit all use the GEM font
  438.   format. GEM fonts are used by a large number of programs such as NeoPaint
  439.   and NeoBook from NeoSoft and any other program developed with the GX-Text
  440.   programming kit by Genus Microprogramming. There are also a few utilities
  441.   out there to convert Windows fonts to GEM format. This gives you an endless
  442.   amount of available fonts to use in your screens and MAX Graphics compatible
  443.   programs. For lots of GEM fonts and other GEM font utilities, please call
  444.   the BBS number listed at the end of this document.
  445.  
  446.  
  447. ───────────────────────────────────────────────────────────────────────────────
  448.  
  449.  
  450.   MAX Graphics Limitations:
  451.   ─────────────────────────
  452.   A - Minimum/Maximum X1,Y1,X2,Y2 coordinates are 0,0,639,479 but should
  453.       be limited to 0,21,639,458 to allow for a status bar at the top and
  454.       bottom of the screen set to a 20 pixel height.
  455.  
  456.   B - Colors range from 0 to 255 with colors 0 though 16 matching the same
  457.       colors found in the ANSI color palette.
  458.  
  459.   C - Color number 255 in icon files is transparent.
  460.  
  461.   D - Maximum items per picklist is 800 with a 75 character width.
  462.  
  463.   E - Maximum text lines for the text editor or text reader is 110 lines.
  464.  
  465.   F - The maximum number of active windows at any one time is 30.
  466.  
  467.   G - The maximum number of buttons per window is 30.
  468.  
  469.   H - The maximum number of entry fields per window is 30.
  470.  
  471.  
  472.   MAXscript and MAXcontrol Command Library:
  473.   ─────────────────────────────────────────
  474.   After your BBS or door program has determined whether or not the user has
  475.   RIP capabilities, you send the string #255#126#127#255 to the comport. If
  476.   the caller has MAXscript and MAXcontrol capabilities, it will return the
  477.   the MAXscript version number it supports in the format #.## ....From here
  478.   you will tell your program "YES" there is FULL remote MAX Graphics support.
  479.  
  480.  
  481.   AddTo_PickList('Text String')
  482.   MAXcontrol: #255#126#149'Text String'#255
  483.               This command adds items to the picklist. The maximum number
  484.               of items in a picklist is 800. Each item should be less than
  485.               or equal to 75 characters wide. If it is longer, the excess
  486.               length will simply be truncated.
  487.               See Also: New_PickList(), SetUp_PickList(), Reset_PickList()
  488.  
  489.  
  490.   Animate()
  491.   MAXcontrol: #255#126#253#255
  492.               This throws MAXterm and Mini-MAX into what is referred to as
  493.               an "Animated Wait State" This command should be used with
  494.               extreme caution because of the amount of drag it puts on the
  495.               host and the terminal. This will cause the host and terminal
  496.               to read and write to the comport in an alternating fashion.
  497.               This allows you to simulate online multi-tasking and can be
  498.               used to integrate bi-directional protocols.
  499.               See Also: End_Screen()
  500.  
  501.  
  502.   Bar(X1,Y1,X2,Y1)
  503.   MAXcontrol: #255#126#159X1,Y1,X2,Y1#255
  504.               This command draws a solid filled rectangle on the screen
  505.               defined by the X1,Y1,X2,Y2 coordinates with the currently
  506.               selected color and fill style selected by Set_Fill_Style().
  507.               See Also: Set_Fill_Style(), Rectangle()
  508.  
  509.  
  510.   Change_Field(FieldNumber)
  511.   MAXcontrol: #255#126#152FieldNumber#255
  512.               This command will tell your program to make a new Entry
  513.               Field active. After this command is issued, you need to
  514.               issue the command Redraw_Field() to make the change take
  515.               effect.
  516.               See Also: Entry_Field(), Redraw_Field()
  517.  
  518.  
  519.   Clear_Screen(Color)
  520.   MAXcontrol: #255#126#161Color#255
  521.               This command will clear the screen from 0,21,639,458 in the
  522.               color determined by the "Color" variable. This command will
  523.               not touch the top and bottom status bars.
  524.  
  525.  
  526.   Draw_Backdrop('IMAGE.FIL')
  527.   MAXcontrol: #255#126#166'IMAGE.FIL'#255
  528.               This command should be the first command called in the first
  529.               MAX screen file in your BBS. This _MUST_ be called before any
  530.               Draw_Window() command, otherwise the previous screen backdrop
  531.               will be replaced with the first RIP Clear Screen command or
  532.               the first Kill_Window() command. You don't have to use this
  533.               if you don't want to, this is only used if you want to have
  534.               some kind of custom bitmapped image displayed to the user in
  535.               the background while they are online. The backdrop image will
  536.               be plotted starting at 0,21 and will be cropped if the image
  537.               exceeds the 639,458 lower screen limit.
  538.  
  539.  
  540.   Draw_Button(X1,Y1,PixelWidth,HotKey,UseIcon,Icon#,'ButtonTitle')
  541.   MAXcontrol: #255#126,#130X1,Y1,PixelWidth,HotKey,UseIcon,Icon#,'ButtonTitle'#255
  542.               This command draws a standard raised button on the screen
  543.               at X1/Y1 coordinates. This type of button has a predefined
  544.               height of 20 pixels. You define the width of the button with
  545.               the PixelWidth variable. This width is intentionally not
  546.               predefined so you can create a more customized look to the
  547.               screens you create. The HotKey variable determines the key's
  548.               (ASCII Value) that needs to be pressed to make MAXterm return
  549.               the Button # value. With no buttons on the screen, the button
  550.               value is zero. If this is the first button on the screen, the
  551.               button value will return a 1, if it's the second button, it
  552.               will return a 2, and so on. The UseIcon variable tells MAXterm
  553.               whether or not to plot a 16x16 (Small Icon Type) icon on the
  554.               button (0=No,1=Yes). The Icon# variable determines the icon
  555.               number in the currently selected 16x16 icon library file.
  556.               See Also: Small_Icon_LIB(), Radio_Button()
  557.  
  558.  
  559.   Draw_Circle(X1,Y1,Radius,Color)
  560.   MAXcontrol: #255#126#158X1,Y1,Radius#255
  561.               This command draws circle on the screen inside with the
  562.               X1,Y1 coordinates being the center of the circle. Radius
  563.               is the amount of pixels from the center to the outmost
  564.               edge of the circle. The color of the cirle is determined
  565.               by the "Color" variable. The circle can be filled with a
  566.               a color and pattern of your choice. See the Flood_Fill()
  567.               command for more information.
  568.               See Also: Flood_Fill(), Set_Fill_Style()
  569.  
  570.  
  571.   Draw_Line(X1,Y1,X2,Y2,Color)
  572.   MAXcontrol: #255#126132X1,Y1,X2,Y2,LineColor#155
  573.               This command draws a line from X1,Y1 to X2,Y2 in the color
  574.               specified by the variable "Color".
  575.  
  576.  
  577.   Draw_Rectangle(X1,Y1,X2,Y2,Color)
  578.   MAXcontrol: #255#126#162X1,Y1,X2,Y2#255
  579.               This command is similar to the Bar() command with the small
  580.               exception that there is no fill, this is just a frame. You
  581.               can still fill the rectangle with the Flood_Fill() command
  582.               if you wish. The color of the frame is determined by the
  583.               variable "Color".
  584.               See Also: Flood_Fill(), Set_Fill_Style()
  585.  
  586.  
  587.   Draw_Window(X1,Y1,X2,Y2,WindowType,HeaderText)
  588.   MAXcontrol: #255#126#128100,100,630,380,WindowType,'WindowTitle'#255
  589.               This command draws a window at X1,Y1,X2,Y2 the coordinates.
  590.               WindowType defines which type of window to display on the
  591.               user's screen. There are four window types at this time:
  592.               1 - Standard Block Window
  593.               2 - Invisible Window
  594.               3 - Flat Panel Window
  595.               4 - Semi-Transparent Window
  596.               Any setting outside of these ranges will cause the program
  597.               to default to window type #1.
  598.               See Also: Kill_Window(), Text_View_Window()
  599.  
  600.  
  601.   End_Screen()
  602.   MAXcontrol: #255#126#254#255
  603.               This command is used in either screen files or BBS or door
  604.               programs to throw MAXterm into its "Wait State" mode. This
  605.               command or the Animate() command must be issued at the end
  606.               of EVERY screen file or when ever your BBS or door program
  607.               is finished drawing.
  608.               See Also: Animate()
  609.  
  610.  
  611.   Entry_Field(X1,Y1,EntryType,Width,'DefaultText')
  612.   MAXcontrol: #255#126#131X1,Y1,EntryType,Width,'DefaultText'#255
  613.               This command plots an entry field on the screen at X1/Y1
  614.               coordinates. This is only meant to be used with BBS or
  615.               door programs due to the way it returns the text entered
  616.               in the fields. However, you can still use these in your
  617.               screens for purely cosmetic purposes. There are six types
  618.               of EntryTypes: 0 - Normal String
  619.                              1 - Numeric String
  620.                              2 - Proper String
  621.                              3 - Date String
  622.                              4 - Phone Number
  623.                              5 - File Name
  624.               After all of you items have been drawn in the window you
  625.               will issue the End_Screen() or Animate() commands which
  626.               will activate the scrolling of the Entry_Fields. In some
  627.               part of your program you will have to execute the command
  628.               Get_Field_Data() after the user clicks a button which is not
  629.               a Picklist or Text File Reader scroll button. This will tell
  630.               MAXterm to send the string from each field to the comport in
  631.               a fashion similar to a MAXcontrol code. Th entry fields are
  632.               numbered 1..30 (30 maximum) as they are drawn on the screen
  633.               and text strings will be returned to your BBS or door like:
  634.               #255#126#251FieldTextString#255 in sequential fashion.
  635.               See Also: Get_Field_Data()
  636.  
  637.  
  638.   Flood_Fill(X1,Y1,BorderColor)
  639.   MAXcontrol: #255#126#165X1,Y1,BorderColor#255
  640.               This command fills an area starting at the X1/Y1 coordinates
  641.               using the color and fill determined by the Set_Fill_Style()
  642.               command. The BorderColor variable determines the color of
  643.               the lines (or borders) where you want the fill to stop at.
  644.               Say you used the command Draw_Circle(100,100,50,64). The
  645.               border of the circle is in color #64. After you determine
  646.               the color and style of the fill with Set_Fill_Style(), you
  647.               would use Flood_Fill(100,100,64) to fill the circle to its
  648.               borders or any other overlapping shapes so long as their
  649.               borders are in color # 64 as well.
  650.               See Also: Set_Fill_Style(), Draw_Rectangle(), Draw_Circle()
  651.  
  652.  
  653.   Frame_High(X1,Y1,X2,Y2)
  654.   MAXcontrol: #255#126#144X1,Y1,X2,Y2#255
  655.               This command simply draws a pseudo 3-D frame on the screen
  656.               at the X1,Y1,X2,Y2 coordinates that appears to be raised.
  657.               Meaning the top and left side of the frame are brighter
  658.               than the bottom and right sides.
  659.               See Also: Frame_Low()
  660.  
  661.  
  662.   Frame_Low(X1,Y1,X2,Y2)
  663.   MAXcontrol: #255#126#145X1,Y1,X2,Y2#255
  664.               This command is the opposite of the Frame_High() command.
  665.               This draws a frame on the screen at X1,Y1,X2,Y2 that
  666.               appears to be lowered.
  667.               See Also: Frame_High()
  668.  
  669.   
  670.   Get_Editor_Text()
  671.   MAXcontrol: #255#126#249#255
  672.               This command is used to send the text saved to the text file
  673.               created by the text editor. The text is sent in the form of
  674.               a character by character transfer with a #13 at the end of
  675.               every line to indicate a line feed.
  676.               See Also: New_Text_Editor(), Run_Text_Editor()
  677.  
  678.  
  679.   Get_Field_Data()
  680.   MAXcontrol: #255#126#250#255
  681.               This command is NEVER to be used in anything but a BBS or a
  682.               door program. NEVER use this command in screen files! If your
  683.               program uses entry fields for anything, then you will need a
  684.               way of getting the field data from the user's terminal back
  685.               to your program. For every entry field on the user's screen,
  686.               this command will cause the remote's terminal program to send
  687.               a #255#126#251FieldTextString#255 for every entry field on
  688.               the user's screen in the same order as they were drawn.
  689.               See Also: Entry_Field()
  690.  
  691.  
  692.   Hide_Mouse()
  693.   MAXcontrol: #255#126#139#255
  694.               This command hides the mouse cursor from view. This is
  695.               important to do before you do any drawing or text plotting
  696.               of any kind. If you don't, the user will end up with a
  697.               blemish on the screen as soon as they move their mouse.
  698.               See Also: Show_Mouse()
  699.  
  700.  
  701.   Kill_Window()
  702.   MAXcontrol: #255#126#129#255
  703.               This command is mainly used in BBS or door programs designed
  704.               around MAX Graphics. Any time you use Draw_Window(), you must
  705.               use Kill_Window() unless you are creating screens. Any time a
  706.               new screen is sent, the RIP clear screen command is sent prior
  707.               to the screen file. This does a global Kill_Window in MAXterm,
  708.               so you don't have to worry about using this in your screens.
  709.               The reason for this command is so you can kill any window you
  710.               have created in order to restore that portion of the screen
  711.               and also restore buttons/fields/picklists/editor/reader/etc
  712.               that may happen to exist in the previous window (if any).
  713.               See Also: Draw_Window(), Text_View_Window()
  714.  
  715.  
  716.   Large_Icon_LIB('FILENAME.003')
  717.   MAXcontrol: #255#126#135'FILENAME.003'#255
  718.               This tells MAXterm to change icon library files for its
  719.               "Large" (60x60) icons. All Large icon libraries have an
  720.               extension of "003"....If the extension is any different,
  721.               the default icon library will be used.
  722.               See Also: Medium_Icon_LIB(), Small_Icon_LIB(),
  723.                         Put_Large_Icon()
  724.  
  725.  
  726.   Load_Font('FILENAME.GFT')
  727.   MAXcontrol: (#255#126#148'FILENAME.GFT'#255
  728.               This command will dispose of the currently loaded GEM
  729.               font file in memory and load a new one. GEM font files
  730.               must have the "GFT" file extension or the font file
  731.               will not be loaded. These are the user defined fonts
  732.               and referred to as FontType #4.
  733.               See Also: Standard_Text(), Shadow_Text()
  734.  
  735.  
  736.   Load_Text_File('FILENAME.TXT')
  737.   MAXcontrol: #255#126#167'FILENAME.TXT'#255
  738.               This command is used to load a text file into the buffer
  739.               used by the text reader and text editor. This command is
  740.               called _AFTER_ the call to New_Text_Reader() and after
  741.               the call to New_Text_Editor(). Note: You don't have to
  742.               load a text file into the text editor if you don't want
  743.               to. Run_Text_Editor() and Show_Text_Page() are called
  744.               _AFTER_ this command. This file must exist in the user's
  745.               \RESOURCE\ or \SESSION\ subdirectories. MAXterm will
  746.               look for this file in the \SESSION\ subdirectory first.
  747.               Note: The text buffer only allows for 110 lines of text.
  748.               See Also: New_Text_Editor(), New_Text_Reader(),
  749.                         Run_Text_Editor(), Show_Text_Page()
  750.  
  751.  
  752.   Lowered_Box(X1,Y1,X2,Y2)
  753.   MAXcontrol: #255#126#147X1,Y1,X2,Y2#255
  754.               This command draws a box on the screen at that appears to
  755.               be lowered at the X1,Y1,X2,Y2 coordinates.
  756.               See Also: Raised_Box()
  757.  
  758.  
  759.   Medium_Icon_LIB('FILENAME.002')
  760.   MAXcontrol: #255#126#134'FILENAME.002'#255
  761.               This tells MAXterm to change icon library files for its
  762.               "Medium" (30x30) icons. All Medium icon libraries have an
  763.               extension of "002"....If the extension is any different,
  764.               the default icon library will be used.
  765.               See Also: Small_Icon_LIB(), Large_Icon_LIB(),
  766.                         Put_Medium_Icon()
  767.  
  768.  
  769.   Mouse_Mask(MaskNumber)
  770.   MAXcontrol: #255#126#141MaskNumber#255
  771.               This command changes the "Mask" of the mouse cursor. There
  772.               are a total of 19 mouse masks: 0  - Standard Arrow
  773.                                              1  - Up Arrow
  774.                                              2  - Down Arrow
  775.                                              3  - Left Arrow
  776.                                              4  - Right Arrow
  777.                                              5  - Check Mark
  778.                                              6  - Up Hand
  779.                                              7  - Down Hand
  780.                                              8  - Left Hand
  781.                                              9  - Right Hand
  782.                                              10 - Stop Hand
  783.                                              11 - Hour Glass
  784.                                              12 - Diagonal Cross
  785.                                              13 - Rectangular Cross
  786.                                              14 - Rectangular Box
  787.                                              15 - Target Cross
  788.                                              16 - Target Circle
  789.                                              17 - Target Box
  790.                                              18 - Question Mark
  791.               Any number outside of these ranges will cause the
  792.               mouse mask to default to zero.
  793.               See Also: Hide_Mouse(), Show_Mouse()
  794.  
  795.  
  796.   New_PickList(X1,Y1,OnScreen,Width)
  797.   MAXcontrol: #255#126#168X1,Y1,OnScreen,Width#255
  798.               This command initializes the scrolling picklist on the
  799.               screen and allocates memory for it. The upper left corner
  800.               of the picklist will be at X1/Y1 coordinates. The OnScreen
  801.               variable determines how many items (in rows) will appear
  802.               on the screen, and the Width variable determines how wide
  803.               (in characters) the picklist will be. There are however a
  804.               couple rules you must follow when using picklists in your
  805.               screens and programs. The picklist MUST be the first item
  806.               in the window. When you are in your repeat loop initiated
  807.               by End_Screen() or Animate() the top scroll button in the
  808.               picklist with return 1 and the other will report two. All
  809.               other buttons added to the screen after the picklist will
  810.               return values from 3 on up.
  811.               See Also: AddTo_PickList(), SetUp_PickList, Reset_PickList()
  812.  
  813.  
  814.   New_Text_Editor(Y1)
  815.   MAXcontrol: #255#126#154Y1#255
  816.               This command initiates the text editor on the screen. You
  817.               will notice that there only a Y1 coordinate because the
  818.               text field takes up the whole width of the screen. You'll
  819.               need to call Draw_Window() before this for two reasons...
  820.               The first reason is because you will most likely want to
  821.               have some kind of a header to display what the text file
  822.               or message is that is being edited. The second reason is
  823.               because you will need to save the entire screen before
  824.               you plot the editing field on the screen. That way when
  825.               the user is done with their editing, you can make a call
  826.               to Kill_Window() to restore the entire screen. After you
  827.               call this command, you may optionally stuff the buffer
  828.               with text from a text file. See Load_Text_File() for more
  829.               information.
  830.               See Also: Draw_Window(), Kill_Window(),
  831.                         Load_Text_File(), Run_Text_Editor()
  832.  
  833.  
  834.   New_Text_Reader(Y1)
  835.   MAXcontrol: #255#126#156#Y1#255
  836.               As with the New_Text_Editor command, this command uses
  837.               only the Y1 coordinate because the text file reader takes
  838.               up the whole width of the screen. All of the same rules
  839.               as the New_Text_Editor command apply here. You will need
  840.               to issue a command to Draw_Window() to save the previous
  841.               screen. See Load_Text_File() for more information.
  842.               See Also: New_Text_Editor(), Draw_Window(),
  843.                         Kill_Window(), Show_Text_Page()
  844.  
  845.  
  846.   Play_Sound('SOUND.FIL')
  847.   MAXcontrol: #255#126#163'SOUND.FIL'#255
  848.               This command plays 1 of three types of sound files through
  849.               the user's sound card. Supported sound formats are MOD,
  850.               MID (MIDI), and VOC....The user MUST have the environment
  851.               variable set for their sound card for this function to work
  852.               for them. MOD and MID (MIDI) files can play in a repeating
  853.               fashion will the user does something else.
  854.  
  855.  
  856.   Put_Image(X1,Y1,'IMAGE.FIL')
  857.   MAXcontrol: #255#126#164X1,Y1,'IMAGE.FIL'#255
  858.               This command displays a graphics image on the screen at the
  859.               X1,Y1 coordinates. PCX, BMP, and JPG (JPEG) image files are
  860.               supported. GIF files are not supported thanks to CompuServe.
  861.  
  862.  
  863.   Put_Large_Icon(X1,Y1,IconNumber)
  864.   MAXcontrol: #255#126#136X1,Y1,IconNumber#255
  865.               Plots a "Large" (60x60) icon at the X1/Y1 coordinates.
  866.               IconNumber is the zero based record number of the icon
  867.               in the currently selected Large_Icon_LIB. If the icon
  868.               number you select IconNumber is larger than the amount
  869.               of icons in the library (minus 1), then icon #0 will
  870.               be used instead.
  871.               See Also: Put_Small_Icon(), Put_Medium_Icon(),
  872.                         Large_Icon_LIB()
  873.  
  874.  
  875.   Put_Medium_Icon(X1,Y1,IconNumber)
  876.   MAXcontrol: #255#126#137X1,Y1,IconNumber#255
  877.               Plots a "Medium" (30x30) icon at the X1/Y1 coordinates.
  878.               IconNumber is the zero based record number of the icon
  879.               in the currently selected Medium_Icon_LIB. If the icon
  880.               number you select IconNumber is larger than the amount
  881.               of icons in the library (minus 1), then icon #0 will
  882.               be used instead.
  883.               See Also: Put_Small_Icon(), Put_Large_Icon(),
  884.                         Medium_Icon_LIB()
  885.  
  886.  
  887.   Put_Small_Icon(X1,Y1,IconNumber)
  888.   MAXcontrol: #255#126#138X1,Y1,IconNumber#255
  889.               Plots a "Small" (16x16) icon at the X1/Y1 coordinates.
  890.               IconNumber is the zero based record number of the icon
  891.               in the currently selected Small_Icon_LIB. If the icon
  892.               number you select IconNumber is larger than the amount
  893.               of icons in the library (minus 1), then icon #0 will
  894.               be used instead.
  895.               See Also: Put_Medium_Icon(), Put_Large_Icon(),
  896.                         Small_Icon_LIB()
  897.  
  898.  
  899.   Raised_Box(X1,Y1,X2,Y2)
  900.   MAXcontrol: #255#126#146X1,Y1,X2,Y2#255
  901.               This command draws a box on the screen at that appears to
  902.               be raised at the X1,Y1,X2,Y2 coordinates. This is basically
  903.               a Flat Panel Window with no screen saving abilities.
  904.               See Also: Lowered_Box()
  905.  
  906.  
  907.   Redraw_Field()
  908.   MAXcontrol: #255#126#153#255
  909.               This command must be issued immediately after a call to the
  910.               Change_Field() command.
  911.               See Also: Entry_Field(), Change_Field()
  912.  
  913.  
  914.   Reset_PickList(ItemNumber)
  915.   MAXcontrol: #255#126#151#255
  916.               This command resets the highlight bar in the picklist to a
  917.               specified picklist item. You issue this command and then
  918.               issue the SetUp_PickList() command.
  919.               See Also: New_PickList(), AddTo_PickList(), SetUp_PickList()
  920.  
  921.  
  922.   Reset_Remote()
  923.   MAXcontrol: #255#126#169#255
  924.               This command is used to reset all colors and file names in
  925.               the remote's terminal program to their default values. See
  926.               the section of this document on MAXcolor codes.
  927.  
  928.  
  929.   Run_Text_Editor()
  930.   MAXcontrol: #255#126#155#255
  931.               This command must be issued ONLY after the New_Text_Editor()
  932.               command has been issued.
  933.               See Also: New_Text_Editor
  934.  
  935.  
  936.   Set_Fill_Style(Pattern,Color)
  937.   MAXcontrol: #255#126#160Pattern,Color#255
  938.               This sets the fill style to be used to fill in the center
  939.               of a Bar or Circle. A setting of zero will cause the shape
  940.               to be drawn on the screen with just the frame being set by
  941.               the "Color" variable. There are 12 different fill styles:
  942.               0  - No Fill
  943.               1  - Solid Fill
  944.               2  - Line Fill
  945.               3  - Light Slash Fill
  946.               4  - Heavy Slash Fill
  947.               5  - Heavy Back Slash Fill
  948.               6  - Light Back Slash Fill
  949.               7  - Light Cross Hatch
  950.               8  - Heavy Cross Hatch
  951.               9  - Interleave Fill
  952.               10 - Wide Dot Fill
  953.               11 - Close Dot Fill
  954.               Any number outside of these ranges will cause the fill
  955.               style to default to zero.
  956.               See Also: Bar(), Circle(), Polygon()
  957.  
  958.  
  959.   SetUp_PickList()
  960.   MAXcontrol: #255#126#150#255
  961.               After the picklist has been initialized with New_PickList()
  962.               and has had items added to it with AddTo_PickList(), it is
  963.               now ready to run in the mouse loop. This command tells the
  964.               program that you are finished adding items to the picklist
  965.               and that it is now ready. When using picklists you need to
  966.               remember that the picklist always adds two buttons to the
  967.               beginning of your screen. The current item in the picklist
  968.               with the highlight bar on it is returned in the variable
  969.               PickInfo.Current in the MAX Graphics interface unit. Should
  970.               you wish to return that text into your program, you would
  971.               access it as PickList[PickInfo.Current]....
  972.               See Also: New_PickList(), AddTo_PickList(), Reset_PickList()
  973.  
  974.  
  975.   Show_Mouse()
  976.   MAXcontrol: #255#126#140#255
  977.               Any time a call to Hide_Mouse() is called, you will need
  978.               to call this command to re-enable the users mouse.
  979.               See Also: Hide_Mouse()
  980.  
  981.  
  982.   Show_Text_Page()
  983.   MAXcontrol: #255#126#157#255
  984.               This command must be issued ONLY after the New_Text_Reader()
  985.               command has been issued.
  986.               See Also: New_Text_Reader
  987.  
  988.  
  989.   Small_Icon_LIB('FILENAME.001')
  990.   MAXcontrol: #255#126#133'FILENAME.001'#255
  991.               This tells MAXterm to change icon library files for its
  992.               "Small" (16x16) icons. All Small icon libraries have an
  993.               extension of "001"....If the extension is any different,
  994.               the default icon library will be used.
  995.               See Also: Medium_Icon_LIB(), Large_Icon_LIB(),
  996.                         Put_Small_Icon()
  997.  
  998.  
  999.   Standard_Text(X1,Y1,TextColor,FontType,'Your Text')
  1000.   MAXcontrol: #255#126#142X1,Y1,TextColor,FontType,'Your Text'#255
  1001.               This command is used to plot text at the X1/Y1 coordinates
  1002.               on the screen. TextColor is the color of your text and
  1003.               FontType is the type of font you want you text printed
  1004.               in. FontTypes are: 1 - 5x8 bitmapped font
  1005.                                  2 - GEM "System" font
  1006.                                  3 - 8x14 ROM resident font
  1007.                                  4 - External GEM font
  1008.               See Also: Shadow_Text(), Load_Font()
  1009.  
  1010.  
  1011.   Shadow_Text(X1,Y1,TextColor,ShadowColor,FontType,'Your Text')
  1012.   MAXcontrol: #255#126#143TextColor,ShadowColor,FontType,'Your Text'#255
  1013.               This is command is similar to Standard_Text() except this
  1014.               command plots your text with a shadow behind it. You simply
  1015.               define two colors here instead of just one....
  1016.               FontTypes are: 1 - 5x8 bitmapped font
  1017.                              2 - GEM "System" font
  1018.                              3 - 8x14 ROM resident font
  1019.                              4 - External GEM font
  1020.               See Also: Standard_Text(), Load_Font()
  1021.  
  1022.  
  1023.   Text_View_Window(X1,Y1,X2,Y2)
  1024.   MAXcontrol: #255#126#252X1,Y1,X2,Y2#255
  1025.               This command can be used in screen files or BBS and door
  1026.               programs. The reason for this function is that there are
  1027.               some BBS programs that create dynamically generated text
  1028.               after the screens are drawn. This text is most generally
  1029.               to tell the user what the active file or message area is
  1030.               or to send the user general system info or warnings. You
  1031.               would use this command to define a window on the screen
  1032.               where you want this information displayed. You will have
  1033.               to use Kill_Window() to destroy this window in your BBS
  1034.               or door program. If this is used in a screen file, then
  1035.               the standard RIP clear screen command will get rid of it.
  1036.               See Also: Draw_Window(), Kill_Window()
  1037.  
  1038.  
  1039. ───────────────────────────────────────────────────────────────────────────────
  1040.   TO BE CONTINUED: (More Commands Are Sill Being Added)
  1041. ───────────────────────────────────────────────────────────────────────────────
  1042.  
  1043.  
  1044.   MAXcolor Variables:
  1045.   ───────────────────
  1046.   You can remotely change the colors used in the user's terminal program for
  1047.   drawing graphics primitives. However, there are no text based counterparts
  1048.   to these commands in order to retain the highest possible speed. These are
  1049.   similar to MAXcontrol commands, the exception to the rule is that the #126
  1050.   in MAXcontrol is replaced by a #125, all MAXcolor variables start at #127.
  1051.   For a better description of what each variable is used for, please see the
  1052.   file SVGAUNIT.PAS in the MAX Graphics development kit.
  1053.  
  1054.   Win1Back      = #255#125#127ColorNumber#255
  1055.   Win4Back      = #255#125#128ColorNumber#255
  1056.   Win1High      = #255#125#129ColorNumber#255
  1057.   Win4High      = #255#125#130ColorNumber#255
  1058.   Win1Low       = #255#125#131ColorNumber#255
  1059.   Win4Low       = #255#125#132ColorNumber#255
  1060.   Win1Frame1    = #255#125#133ColorNumber#255
  1061.   Win1Frame2    = #255#125#134ColorNumber#255
  1062.   Win4Frame     = #255#125#135ColorNumber#255
  1063.   ActiveHdr     = #255#125#136ColorNumber#255
  1064.   InactiveHdr   = #255#125#137ColorNumber#255
  1065.   HdrTitle      = #255#125#138ColorNumber#255
  1066.   ButtonFrame   = #255#125#139ColorNumber#255
  1067.   ButtonFace    = #255#125#140ColorNumber#255
  1068.   ButtonHigh    = #255#125#141ColorNumber#255
  1069.   ButtonLow     = #255#125#142ColorNumber#255
  1070.   ButtonHot     = #255#125#143ColorNumber#255
  1071.   ButtonText    = #255#125#144ColorNumber#255
  1072.   FrameHigh     = #255#125#145ColorNumber#255
  1073.   FrameLow      = #255#125#146ColorNumber#255
  1074.   BoxBack       = #255#125#147ColorNumber#255
  1075.   BoxHigh       = #255#125#148ColorNumber#255
  1076.   BoxLow        = #255#125#149ColorNumber#255
  1077.   FieldTextHigh = #255#125#150ColorNumber#255
  1078.   FieldTextLow  = #255#125#151ColorNumber#255
  1079.   FieldBack     = #255#125#152ColorNumber#255
  1080.   FieldFrame    = #255#125#153ColorNumber#255
  1081.   FieldHigh     = #255#125#154ColorNumber#255
  1082.   QuoteColor    = #255#125#155ColorNumber#255
  1083.   MsgColor      = #255#125#156ColorNumber#255
  1084.   TearColor     = #255#125#157ColorNumber#255
  1085.   FlagColor     = #255#125#158ColorNumber#255
  1086.   MsgIDcolor    = #255#125#159ColorNumber#255
  1087.   TextBack      = #255#125#160ColorNumber#255
  1088.   PickHighFore  = #255#125#161ColorNumber#255
  1089.   PickHighBack  = #255#125#162ColorNumber#255
  1090.   EditorFrame   = #255#125#163ColorNumber#255
  1091.   ScreenColor   = #255#125#164ColorNumber#255
  1092.  
  1093.  
  1094. ───────────────────────────────────────────────────────────────────────────────
  1095.  
  1096.   Larry L. Athey
  1097.   1239 Cheyenne
  1098.   Alliance, NE, 69301
  1099.   Owner    : BBS Utiliteez Software
  1100.   FAX/BBS #: (308)762-2239
  1101.   FidoNet  : 1:285/703
  1102.   GDS-Net  : 100:1010/1
  1103.   ivNET    : 411:1500/0
  1104.   Internet : larry.athey@tos.daphnis.com, larry.athey%otherside@ivsoft.com
  1105.  
  1106.